package com.beantools.util.jsonutil;

import com.alibaba.fastjson.JSONObject;
import com.beantools.execption.JSONException;

import java.io.File;
import java.io.IOException;

import static com.beantools.constants.MainASCCode.ASC_LEFT_BRACKETS;
import static com.beantools.constants.MainASCCode.ASC_RIGHT_BRACKETS;
import static com.beantools.util.ObjectUtil.isNull;
import static com.beantools.util.jsonutil.JSONImportUtil.fileToJsonString;

/**
 * 这是{@link JSONExportUtil}和{@link JSONImportUtil}父类，其主要封装通过文件<code>file</code>
 * 和对象<code>object</code>获取<code>json</code>字符串。
 * <p>
 * 这个工具将在以后的公司开发的插件中使用。
 *
 * @author baoya
 * @version 1.0
 * @since 1.1.0
 */
public class JSONUtil {

    /**
     * 这是通过文件<code>file</code>对象获取文件中的<code>json</code>字符串
     *
     * @param file 实例化的<code>File</code>对象
     * @return 返回的是<code>json</code>字符串
     */
    protected static String getArrayJson(File file) throws IOException {
        String json = fileToJsonString(file);
        if (json.charAt(0) != ASC_LEFT_BRACKETS && json.charAt(json.length() - 1) != ASC_RIGHT_BRACKETS) {
            throw new JSONException("文件" + file.getName() + "中json字符串不符合数组格式");
        }
        return json;
    }

    /**
     * 这是通过实例化<code>object</code>对象获取文件中的<code>json</code>字符串
     *
     * @param object 实例化的<code>object</code>对象
     * @return 返回的是<code>json</code>字符串
     */
    protected static String getJsonString(Object object) {
        if (isNull(object)) {
            throw new JSONException("空对象，导出异常");
        }
        return JSONObject.toJSONString(object);
    }
}
